package com.xiaowen.ssyx.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;

@Configuration
public class CorsConfig {

    @Bean
    public CorsWebFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        // 允许所有的HTTP方法，包括POST（用于上传文件）
        config.addAllowedMethod("*");
        // 允许所有的来源
        config.addAllowedOrigin("*");
        // 允许所有的请求头
        config.addAllowedHeader("*");
        // 特别针对上传文件时使用的 `Content-Type` 进行配置
        config.addExposedHeader("Content-Disposition");  // 曝露Content-Disposition头部（如果需要处理文件下载）
        // 支持跨域的请求内容类型
        config.addAllowedHeader("Content-Type");
        // 注册CORS配置
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
        source.registerCorsConfiguration("/**", config);
        return new CorsWebFilter(source);
    }

}